草庐IT

Java BufferedImage 内存消耗

全部标签

c++ - 在设备上的线性内存中循环二维数组时将 float* 转换为 char*

在CUDA4.0编程指南的第21页有一个示例(下面给出)来说明循环遍历设备内存中二维float组的元素。2D的尺寸是width*height//Hostcodeintwidth=64,height=64;float*devPtr;size_tpitch;cudaMallocPitch(&devPtr,&pitch,width*sizeof(float),height);MyKernel>>(devPtr,pitch,width,height);//Devicecode__global__voidMyKernel(float*devPtr,size_tpitch,intwidth,int

c++ - 表示一个地址需要多少内存?

考虑以下代码。intvar;cout我的疑问是我们如何知道longint有足够的宽度来保存&var指示的内存位置。如果不够怎么办?我正在执行的完整代码...//:C03:YourPets2.cpp//FromThinkinginC++,2ndEdition//Availableathttp://www.BruceEckel.com//(c)BruceEckel2000//CopyrightnoticeinCopyright.txt#includeusingnamespacestd;intdog,cat,bird,fish;voidf(intpet){cout我得到的结果:Address

c++ - std::call_once 和内存重新排序

给定来自here的代码:classlazy_init{mutablestd::once_flagflag;mutablestd::unique_ptrdata;voiddo_init()const{data.reset(newexpensive_data);}public:expensive_dataconst&get_data()const{std::call_once(flag,&lazy_init::do_init,this);return*data;}};我在其他地方也看到了相同模式的一些变体。所以我的问题是:为什么这段代码被认为是保存的?以及为什么编译器不能在调用std::c

C++ 检查可用的内存?

在C++中,我如何检查我有多少可用RAM?我在Windows上,但对Unix答案和Windows都感兴趣。 最佳答案 window:GlobalMemoryStatusEx.MSDN页面有详细的C示例代码。Linux:检查“/proc/meminfo”文件(discussion)OSX:参见这个SO线程DeterminephysicalmemsizeprogrammaticallyonOSX然而,这个问题并不清楚。有物理内存,有虚拟内存,操作系统有能力将一些未使用的页面交换到磁盘/其他存储。如果您需要编写某种系统监视器,那么我的答案

c++ - 为什么如果我删除指向基类的指针我会发生内存泄漏?

我有base类和继承base类的类:classbase{};classderived:publicbase{std::stringstr;};我需要使用指向base类的指针来管理一个derived类,但是下面的代码会导致内存泄漏:base*ptr=newderived();deleteptr;我必须转换ptr,还是有更好的选择? 最佳答案 您需要在基类中有一个虚拟析构函数,以便在运行时找到并调用派生类的析构函数。参见thisquestionandanswer了解更多详情。 关于c++-为

c++ - 如何将对象 move 到未初始化的内存中?

给定一个已分配但未初始化的内存位置,我如何将一些对象move到该位置(破坏原始位置),而不构造可能昂贵的中间对象? 最佳答案 您可以使用placementnew在内存中move构造它:void*memory=get_some_memory();Thing*new_thing=new(memory)Thing(std::move(old_thing));如果它有一个非平凡的析构函数,那么你需要在完成后显式地销毁它:new_thing->~Thing(); 关于c++-如何将对象move到未

c++ - pthreads 中的内存模型规范

使用pthread是否可以保证一个线程中的内存写入何时在其他线程中可见?与Java相比,Java语言规范有一个sectionthatspecifiestheinteractionoflocksandmemory这使得编写可移植的多线程Java代码成为可能。是否有相应的pthreads规范?当然,您总是可以让共享数据变得不稳定,但这不是我想要的。如果这取决于平台,是否有事实上的标准?还是应该使用另一个线程库? 最佳答案 POSIX在4.11MemorySynchronization中指定内存模型:Applicationsshallen

c++ - 在 C++ 中,返回从本地 char 数组创建的字符串会导致内存泄漏或未定义的行为吗?

我想知道这是否会导致C++中的内存泄漏或未定义的结果?stringfoo(){chartempArray[30];strcpy(tempArray,"Thisisatest");returnstring(tempArray);}我知道这在C中是一件坏事,但我还没有找到C++的明确答案。所以每个人都在说不,但我仍然对何时释放内存感到困惑?假设我有调用上述方法的方法voidbar(){stringtestString=foo();}在上面的代码中,从foo()返回的字符串对象在什么时候调用了它的析构函数?是在复制到对象testString后立即执行的吗? 最佳答

c++ - 仅将内存分配给静态变量一次

这个问题在这里已经有了答案:关闭9年前。PossibleDuplicate:Definitionofglobalvariablesusinganonconstantinitializer我有这个代码:#include#includeintfoo(intnum,inti){staticint*array=malloc(sizeof(int));//ERRORHERE!!!printf("%d",array[i]);return0;}intmain(intargc,char*argv[]){inti;for(i=0;i我将代码保存为c源文件,我不能工作?错误提示:gcc-O2-Wallte

c++ - STL 容器和内存管理——对象列表与对象指针列表

我已经仔细研究了关于这个主题的其他一些问题,但(据我所知)没有一个解决如何正确地从包含动态分配内存的STL对象列表与包含动态分配内存的STL对象列表中删除项目的问题不包含动态分配的内存。我想使用对象列表。以这个对象为例(它不包含动态分配的内存):classMyPoint{public:MyPoint(int_x,int_y){x=_x;y=_y;}private:intx;inty;};所以我可能会创建一个对象列表(不是指向它们的指针),向其中添加内容,然后删除一个元素:listmyList;myList.push_back(MyPoint(3,4));myList.push_back